home *** CD-ROM | disk | FTP | other *** search
- NOTE: there's allready a program called slurp, so I've changed the name to
- slirp. But don't panic, it's still pronounced the same.
-
- NOTE: This is an ALPHA release! There WILL be bugs, so don't put your whole
- organisation's IP connectivity through it! (yet) :)
-
- What is SLiRP?
- --------------
-
- SLiRP is a SLIP/CSLIP emulator which allows a normal user with a shell
- account on a UNIX system to act like a SLIP/CSLIP account (a-la TIA).
-
-
- Some of the features of SLiRP
- -----------------------------
-
- * It's free
-
- * It comes with source
-
- * The TCP/IP code is based on 4.4BSD which is widely regarded as a very
- stable and complete implementation. This means it does all the things
- expected of TCP implementations. eg: slow start, congestion avoidance,
- exponential backoff, round-trip-time calculation, delayed ACKs, Nagle
- algorithm, incoming and outgoing IP fragments, etc. etc. The TCP/IP code
- was actually taken from the excellent FreeBSD 2.0 sources. Infact, I went
- out of my way to do as little modification to it as possible. Most things
- that I regarded as unnecessary (eg: the rfc1323 performance enhancments)
- were simply commented out, so if you want to experiment with them, you can.
-
- * Because SLiRP is basically the 4.4BSD TCP/IP code in userland, you can
- easily experiment with the theories of TCP, it's performance etc. without
- having to recompile and reboot a kernel.
-
- * SLiRP can redirect ports, so, for example, even though you don't have a real
- address on the Internet (as with all SLIP-emulators) people can still ftp,
- telnet, etc. into your home machine.
-
- * Redirection doesn't require a seperately compiled program, like term does
- (with tredir). It can be done with either a configuration file, or telnet
- while SLiRP is running.
-
- * Since nothing needs to be compiled on the client side, it works with any OS
- that can talk SLIP/CSLIP (though, there are programs which you can compile
- on the client end if you want, just to make life easier)
-
-
- Planned features:
-
- * PPP (I'm gonna steal FreeBSD 2.0's implementation, so it shouldn't take
- too long :)
-
- * Compression over a telnet session (One of the reasons I still occasionally
- use term)
-
- * trsh-like program, which lets you run multiple shells on the remote-host
- without the need to login multiple times (done)
-
- * tupload-like program, which will let you download/upload files without the
- need to login via ftp.
-
-
- A little more about SLiRP
- -------------------------
-
- SLiRP was written because of frustration with term's cumbersome way of
- emulating a net-connection (to be fair, term was never written for that
- purpose, it's a tribute to Bill Reimers it's come as far as it has), and
- with the lack of source and arcane licensing of TIA (lack of source being
- the main frustration).
-
- Here's a little comparison to put SLiRP in perspective:
-
- ... Advantages of SLiRP over term:
-
- * Only needs compilation on one side of the link (the remote side)
-
- * No need to "port" (termify) software
-
- * Can be used by non-UNIX users (DOS/Win/Mac/etc.)
-
- * Is more secure
-
- * Is easier to use by multiple users (since you're using the kernel's
- networking code, which is already multi-user (well, should be...))
-
- ... Advantages of term over SLiRP:
-
- * Compression (this is planned in SLiRP. Infact, I plan to "borrow" the
- compression code from term :)
-
- * Term has more complete emulation (see below)
-
- * Tupload (working on it)
-
- ... Advantages of SLiRP over TIA:
-
- * Its free
-
- * Comes with source
-
- * Its free
-
- * Comes with source
-
- * Its free
-
- * Comes with source
-
- I'm sure there are other advantages, but those are the main ones :)
-
- * CSLIP (can TIA do this?)
-
- (Don't know enough about TIA to list anymore...)
-
- ... Advantages of TIA over SLiRP:
-
- * Support (although, most of the TIA FAQ's could in theory apply to SLiRP as
- well.. especially the DOS/Win/Mac FAQ's)
-
- * TIA has been ported to more OS's (working on it)
-
- * Stability. TIA is more mature than SLiRP. (working on it)
-
- (Don't know enough about TIA to list anymore...)
-
-
- How to run SLiRP
- ----------------
-
- First, compile SLiRP according to the instructions in the file INSTALL.
- Then all you need to do is run "slirp", quit your comms software (or disable
- it, or whatever) and run your SLIP/CSLIP software on your home machine.
-
-
- Which programs do not work over SLiRP?
- --------------------------------------
-
- Any programs that bind() a port, then tell the other end of the connection
- where they should connect() to this bound port.
-
- For example: when you "get" a file during an ftp session, the ftp client
- bind()'s a socket, has a look at which port the socket is bound to, then
- tell's the ftp server the address and port of this socket (with the PORT
- command). The ftp server then connect()'s to this address/socket pair.
-
- Now, since your machine isn't really on the Internet, this connect() request
- will not arrive to your host, so it will not work.
-
- SLiRP emulates this by bind()ing it's own port on the server that *is* on
- the internet, and tells the ftp server about *that* address/socket pair.
- When the server connect()'s to it, SLiRP will then connect back to your
- machine.
-
- Currently, ftp (PORT) and irc (DCC SEND and DCC CHAT) are emulated, since
- these are the only programs I use which require this emulation. [I'm also
- working on "talk", but it's not finished yet]
-
- If you have a program that does not work with SLiRP, you can do one of 2
- things:
-
- * Find out the format of the "command" and write the code to do a similar
- type of translation as is currently done by SLiRP. See the funcions
- tcp_emu() and tcp_tos() to see how this is done.
-
- * If you can't do the above, and you have the sources to the program, you
- can recompile it with XXX included in the SLiRP package (XXX actually, I
- havn't written this yet..)
-
-
- How do I redirect a port?
- -------------------------
-
- Say you want to let your friend ftp to your home machine. Because your home
- machine isn't really on the Internet, they can't ftp into it directly. You
- need to redirect a port from the host machine (where SLiRP is running) to
- your home machine.
-
- There are 2 ways of doing this:
-
- 1) Put a line in your config file like the following:
-
- redir tcp [port to redirect] [your home IP address]:[port to redirect to]
-
- For example, if you want to redirect port 5000 to port 21 on your home
- machine (ftp port), and your home machine's IP is 123.123.123.123, you'd have:
-
- redir tcp 5000 123.123.123.123:21
-
- Now, your friend can "ftp host.SLiRP.is.running.on 5000" and she'll be
- ftp-ing to your home machine.
-
- The second way is shown below...
-
-
- Controlling SLiRP using telnet
- ------------------------------
-
- Redirection (and other misc. config stuff) can be done on the fly by
- telneting to a specific C class address. (Currently, 192.0.2.x)
-
- All you need to do is telnet to 192.0.2.0, which will give you a
- "command-line" where you can enter commands directly to SLiRP. Most of the
- config-file options are supported, the only ones that aren't are the ones
- which would crash SLiRP (eg: increasing the MTU on-the-fly will crash SLiRP)
-
- There are also aditional ones:
-
- stats [ mbuf | ip | udp | tcp | udpsock | tcpsock ]
-
- Show statistics on [ ... ].
-
- close N
-
- Close the session which has FD N.
-
- kill N
-
- Kill the session which has FD N.
-
- And others. Type "help" to see them all (most).
-
- Notes
- -----
-
- * Type "slirp -h" for a list of command-line options.
-
- * The C class address 192.0.2.xxx is a special address to SLiRP.
- 192.0.2.0 - SLiRP "command line"
- 192.0.2.1 - An alias for the remote-host, -e and -p programs will be run
- on connection to the specified port.
- 192.0.2.2 - An alias for the remote-host, but no -e, -p programs are
- executed.
-
- The difference between the last 2 are subtle, but distinct; for example,
- by default, when you telnet to 192.0.2.1 port 21 (telnet port) you'll
- automatically get a shell instead of a login prompt. But if you telnet to
- 192.0.2.2, you'll get the login prompt as offered by the remote-host.
-
- * To quit SLiRP you simple kill your SLIP/CSLIP software then send 5 0's
- (zeros) down the line, with a 1/2 second pause between each.
-
- * The code to try and "guess" how much it can write to the modem is flakey.
- If you see that your modem isn't being used at it's maximum capacity (eg:
- an ftp session to the remote-host, the modem's RECEIVE light is not
- shining brightly all the time), you might want to increase the baudrate by
- using the -b BAUDRATE command-line option. If you choose a number which
- is far greater than the actuall baud rate, SLiRP will write to the modem
- as fast as the OS allows, hence you'll get the maximum bandwidth.
- However, there will be a noticable increase in lag for interactive data
- (eg: a telnet session). (the -b BAUDRATE option has nothing to do with
- the actual baudrate, it's simply a guide for slirp so that interactive
- sessions are responsive)
-
- * SLiRP was written in an xterm which is 110x35 characters in size. I just
- had a look at portions of the source through an 80x25 character console. It
- is NOT pretty! :) Apoligies to the xterm-deficient.
-
- * You can choose any IP you wish for your home machine, except the following:
-
- - Any weird IP address which has some meaning to IP, like 255.255.255.255,
- 0.0.0.0, 127.0.0.1 (infact, all 127.xxx.yyy.zzz), etc., etc.
-
- * PING does NOT yet work, so don't use ping to test the link. Use
- telnet 192.0.2.0 instead. This should give a "SLiRP command-line ready."
- message. If not, then the link is not working. If you can't telnet/ftp
- to a hostname, then your DNS entry is wrong.
-
-
- How to contact the author
- -------------------------
-
- If you have any suggestions, additions, patches, questions, comments, liquor
- you can e-mail me at danjo@blitzen.canberra.edu.au.
-
- You can ftp SLiRP updates and patches from blitzen.canberra.edu.au in
- /put/slirp.
-
- There's also a WWW page (under construction) at
- http://blitzen.canberra.edu.au/~danjo. I'll put the latest information on
- SLiRP on this WWW page, so please check this page before e-mailing me. (Of
- course, if you need SLiRP to work to be able to use
- Mosaic/Netscape/whatever, then you better e-mail me instead)
-